//
//  ContentViewController.swift
//  StealPicture
//
//  Created by ?! 郭斌勇 on 16/8/10.
//  Copyright © 2016年 ?! 郭斌勇. All rights reserved.
//

import UIKit

let 精挑细选Tag:NSInteger = 100
let 用户分享Tag:NSInteger = 101

class ContentViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{
    
    //MARK:属性

    @IBOutlet weak var switchScrollView: UIScrollView!


    @IBOutlet weak var carefulPickTableView: UITableView!
    @IBOutlet weak var shareTableView: UITableView!

    
    @IBOutlet weak var 动画白条: UIView!
    
    //MARK:视图加载
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        let headerViewNib = UINib(nibName: "ContentTableHeaderView", bundle: nil)
        carefulPickTableView.registerNib(headerViewNib, forHeaderFooterViewReuseIdentifier: "ContentTableHeaderView")
        shareTableView.registerNib(headerViewNib, forHeaderFooterViewReuseIdentifier:  "ContentTableHeaderView")
        
        
        let 主页背景 = UIImage(named: "主页背景")
        carefulPickTableView.backgroundView = UIImageView(image: 主页背景)
        shareTableView.backgroundView = UIImageView(image: 主页背景)
        
        
        
        
        
        NSNotificationCenter.defaultCenter().addObserver(self, selector:"内容类别成员变为空:" , name: 通知_内容类别成员变为空, object: nil)
        
        NSNotificationCenter.defaultCenter().addObserver(self, selector:"数据已经处理完毕:" , name: 通知_数据处理完毕, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector:"用途类别集合数据变更:" , name: 通知_用途类别集合数据变更, object: nil)
        
        

        
        
        
    }

    
    override func viewDidAppear(animated: Bool) {
        动画白条.frame.origin.x = switchScrollView.contentOffset.x
       
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    
    


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */
    
    
    
    //MARK:UITableView 代理
    
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        
        if !用途类别集合_全局量.数据处理完成 {
            return 0
        }
        
        
        
        var 区数 = 0
        
        switch tableView.tag{
        case 精挑细选Tag:
            区数 = 用途类别集合_全局量.精挑细选.内容类别数目
            
        case 用户分享Tag:
            区数 = 用途类别集合_全局量.用户分享.内容类别数目
            
        default:
            break
        }
        
        return 区数
        
    }
    
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        
        
        
        var 行数 = 0
        
        switch tableView.tag{
        case 精挑细选Tag:
            
            let 元素数 = 用途类别集合_全局量.精挑细选.根据序号返回相应的类别的图片信息数目(section)!
            行数 =  元素数 > 0 ? 1  : 0
            
        case 用户分享Tag:
            let 元素数 = 用途类别集合_全局量.用户分享.根据序号返回相应的类别的图片信息数目(section)!
            行数 =  元素数 > 0 ? 1  : 0
        default:
            break
        }
        
        return 行数
        
        
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        
        let 禁止重用标识符 = "cell_section:\(indexPath.section)"
        
        var imageTableCell = tableView.dequeueReusableCellWithIdentifier(禁止重用标识符) as? ImageTableViewCell
        
        
        if imageTableCell == nil {
            
            imageTableCell = tableView.dequeueReusableCellWithIdentifier("ImageTableViewCell", forIndexPath: indexPath) as! ImageTableViewCell
            imageTableCell?.setValue(禁止重用标识符, forKey: "reuseIdentifier")
            
            
        }
        
        
        
        var 内容类别:内容类别_CL?
        
        switch tableView.tag{
            
        case 精挑细选Tag:
            let 所有区需要更新 = 用途类别集合_全局量.精挑细选.需要更新
            let 本区需要更新 = 用途类别集合_全局量.精挑细选.根据序号返回相应内容类别的更新状态(indexPath.section)!
            if 所有区需要更新 ||  本区需要更新 {
                内容类别 = 用途类别集合_全局量.精挑细选.根据序号返回相应的类别(indexPath.section)
                imageTableCell!.内容类别 = 内容类别
            }
            

        case 用户分享Tag:
            let 所有区需要更新 = 用途类别集合_全局量.用户分享.需要更新
            let 本区需要更新 = 用途类别集合_全局量.用户分享.根据序号返回相应内容类别的更新状态(indexPath.section)!
            if 所有区需要更新 ||  本区需要更新 {
                内容类别 = 用途类别集合_全局量.用户分享.根据序号返回相应的类别(indexPath.section)
                imageTableCell!.内容类别 = 内容类别
            }
            
            

        default:
            break
            
        }
        

        return imageTableCell!
        
        
        
    }
    
    
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{
        
        let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier("ContentTableHeaderView") as! ContentTableHeaderView
        
        
        var 内容类别:内容类别_CL?
        
        switch tableView.tag{
            
        case 精挑细选Tag:
            内容类别 = 用途类别集合_全局量.精挑细选.根据序号返回相应的类别(section)
            headerView.类型Lab.text = 内容类别?.名称
            headerView.描述Lab.text = 内容类别?.描述
//            headerView.时间Lab.text = 内容类别?.成员集合.last?.更新时间
            headerView.时间str = 内容类别?.成员集合.last?.更新时间
            
        case 用户分享Tag:
            内容类别 = 用途类别集合_全局量.用户分享.根据序号返回相应的类别(section)
            headerView.类型Lab.text = 内容类别?.名称
            headerView.描述Lab.text = 内容类别?.描述
//            headerView.时间Lab.text = 内容类别?.成员集合.last?.更新时间
            headerView.时间str = 内容类别?.成员集合.last?.更新时间
            
        default:
            break
            
        }
        
        return headerView
        
    }

    
    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat{
        return 60
    }
    func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat{
        return 0.00001
    }
    
    
    //MARK: 分段切换视图机制
    
    
    
    func scrollViewDidScroll(scrollView: UIScrollView){
        
        guard scrollView == switchScrollView else {
            return
        }
        
        动画白条.frame.origin.x = scrollView.contentOffset.x/2
        
    }
    
    
    @IBAction func 精挑细选按钮点击_函数(sender: UIBarButtonItem) {
        switchScrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
    }
    
    @IBAction func 用户分享按钮点击_函数(sender: UIBarButtonItem) {
        switchScrollView.setContentOffset(CGPoint(x: switchScrollView.frame.width, y: 0), animated: true)
    }

    
    //MARK:转场事件
    
    
    
    @IBAction func unwindSegueToContentViewControllerFrom(segue:UIStoryboardSegue){
        
        print("----unwindSegueToContentViewControllerFrom")
        
        
    }
    
    
    
    
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        
        
        if let segueID = segue.identifier{
            
            switch segueID{
            case "DisplayImageViewController_呈现":
                let 被点击的cell = sender as! ImageCollectionViewCell
                let 呈现vc = segue.destinationViewController as! DisplayImageViewController
                呈现vc.触发图片 = 被点击的cell.图片信息
                
                
                
            default:break
            }//switch
            
        }//if
        
        
        
        
    }//prepareForSegue
    
    

    
    
    
    //MARK:通知事件
    

    
    func 数据已经处理完毕(notification:NSNotification){
        carefulPickTableView.backgroundView = nil
        shareTableView.backgroundView = nil
        刷新视图()
        print("接收通知_图片信息添加完毕")
    }
    
    func 用途类别集合数据变更(notification:NSNotification){
        刷新视图()
    }
    
    
    func 内容类别成员变为空(notification:NSNotification){
        刷新视图()
    }

    
    
    func 刷新视图(){
        
        dispatch_async(dispatch_get_main_queue(), {
            
            self.carefulPickTableView.reloadData()
            self.shareTableView.reloadData()
        })
    }
    

    
    
    
 
    
    
    

    
    
}
